\documentclass[a4paper]{article}

% Inclure un graphique 
%\usepackage{graphics}							% Le package à utiliser
%\begin{figure}[h] 								% [h] pour "here", [t] pour "top" et [b] pour "bottom"
%\scalebox{.5}{\includegraphics{schema.png}} 	% Réduit de 50% la taille
%\caption{légende} 	
%\label{Fig:nom_de_la_figure}					% Garde le compteur de schéma, utiliser avec \ref{Fig:nom_de_la_figure}
%\end{figure}

% Tirer un trait 
%\hrulefill

% Inclure du code source 
%\usepackage{listings}
%\lstset{language=[Objective]C}
%\begin{lstlisting}
%\end{lstlisting}

% Faire un tableau 
%\begin{tabular}{|l|c|c|}
%\hline
% &  &  \\
% &  &  \\
% &  &  \\
% &  &  \\
%\hline
%\end{tabular}

% Inclure un document PDF 
%\usepackage{pdfpages}
%\includepdf[pages={}]{document_a_joindre.pdf}

% Inclure des liens hypertext 
%\usepackage{hyperref}
%\hypersetup{
%	colorlinks=true,	%colorise les liens
%	urlcolor= blue,		%couleur des hyperliens
%	linkcolor= blue,	%couleur des liens internes
%}

% Gestion de bibliographie 
%\cite{une_biblio}
%\begin{thebibliography}
%\bibitem{une_biblio} Mr Machin, \href{http://www.son-site.org}
%\end{thebibliography}

\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{amsfonts} % Pour les notations d'ensemble (natural,real...)
\usepackage{stmaryrd} % Pour les doubles crochet ex: \llbracket

\begin{document}
\lhead{DUCHENE Pierre \\DUPONT Thomas} % Entête de Gauche
\rhead{CAO - Projet final} % Entête de droite
\pagestyle{fancy}

\section{Rappels pratique}
\subsection{GWT}
GWT est basé sur un client léger, juste l'IHM et un serveur qui contient le code métier.
Donc dans un projet on retrouve un package client, c'est ici que l'ont trouve le point d'entré du programme (onModuleLoad()).
Le point d'entré est implémenter dans la classe qui implémente EntryPoint.
Le client déclare également dans des interfaces les services fournis par le serveur.
Le serveur quand à lui doit implémenter ces services dans des classes qui hérite de RemoteServiceServlet et qui bien sur implémente l'interface du service.
\subsection{Kermeta}
Le but est de charger un modèle et pour chaque élément faire un traitement particulier en vue de généré automatiquement du code java.

\section{Aide}
Un dossier Aide, à la racine du projet (GWT/Aide) regroupe des fichiers d'intérêt permettant d'illustrer notre travail.

\section{Manipulation}
\subsection{Générer le code via Kermeta}
Nous avons créer des fichiers .ket pour chaque partie d'un code source ou nous estimions que la génération serait mieux s'il elle était déporter.
Par exemple les headers de chaque fichiers, les attributs, leurs accessors\dots
Ces ressources se trouvent dans GWT/src/kermeta/generator/
\\
Ensuite nous avons repris le générateur de code java précédent et nous l'avons adapté, notamment pour qu'il gère correctement les property.
C'est le fichier GWT/src/kermeta/generator/GeneratorForGWT.kmt
Pour pouvoir généré correctement les classes il est nécessaire d'indiquer un chemin absolu.
Pour que le test GWT se déroule correctement il est nécessaire de générer les fichiers dans
GWT/src/com/google/gwt/sample/hello/client/generated/business/

\subsection{Application de démo GWT}
Le point d'entré de l'application se trouve dans: GWT/src/com/google/gwt/sample/hello/client/TpCAO.java
Nous avons par contre déporter la majeur partie du code de création de l'interface de démo dans la classe AppController.java se situant au même niveau.
Nous avons utiliser la classe généré Seminar.java. Nous avons créer un petit formulaire vierge au départ. Chaque widget du formulaire à été créer grâce à la factory SeminarFactory.java, elle aussi généré via Kermeta.
Le but est de voir que si on change la valeur des champs de texte cela change automatiquement l'objet seminar associé.

\section{Problème non résolu}
Attribut qui a un nom de mot clé Java -> Changement dans le modèle ecore.
Bug de l'AppEngine, nous sommes obligé de faire: Compil/Browse.

\end{document}